package proyecto;

import java.util.Iterator;
import jss2.LinkedBinarySearchTree;

public class ListaArticulos {

	private LinkedBinarySearchTree<Articulo> arbolA;

	public ListaArticulos(){
		arbolA  = new LinkedBinarySearchTree<Articulo>();
	}
	
	public Articulo buscarArticuloId(int pId) {
		Iterator<Articulo> itr = this.arbolA.iteratorPreOrder();
		boolean encontrado = false;
		Articulo actual = itr.next();

		while ((actual != null) | encontrado){
			if (actual.comprobarId(pId)){
				encontrado = true;
			}
			else{
				actual = itr.next();
			}
		}
		
		if (!encontrado){
			return null;
		}
		else{
			return actual;
		}
	}
	
	public double calcularImporte(){
		Iterator<Articulo> itr = this.arbolA.iteratorPreOrder();
		Articulo actual = itr.next();
		double totalTicket = 0.0;

		while (actual != null){
			totalTicket = totalTicket + actual.getPrecioCliente();
			actual = itr.next();
		}
		return totalTicket;
	}
	
	public double calcularGanancia(){
		Iterator<Articulo> itr = this.arbolA.iteratorPreOrder();
		Articulo actual = itr.next();
		double ganancia = 0.0;

		while (actual != null){
			ganancia = ganancia + actual.gananciaReal();
			actual = itr.next();
		}
		return ganancia;
	}
	
	
	public Articulo buscarArticuloNombre(String pNombreArticulo) {
		Iterator<Articulo> itr = this.arbolA.iteratorPreOrder();
		boolean encontrado = false;
		Articulo actual = itr.next();

		while ((actual != null) | encontrado){
			if (actual.comprobarNombre(pNombreArticulo)){
				encontrado = true;
			}
			else{
				actual = itr.next();
			}
		}
		
		if (!encontrado){
			return null;
		}
		else{
			return actual;
		}
	}

	public int buscarExistenciasArticulo(Articulo a){
		return (a.getUnidades());
	}
	
	public void anadirArticulo(Articulo pArt){
		if (pArt != null){
			this.arbolA.addElement(pArt);
		}
		else{
			/////
		}
	}
	
	public void eliminarArticulo(Articulo pArt){
		if (pArt != null){
			this.arbolA.removeElement(pArt);
		}
		else{
			/////
		}
	}
}
